home *** CD-ROM | disk | FTP | other *** search
AMOS Source Code | 1992-11-14 | 15.4 KB | 584 lines |
- On Error Goto ERR
- Screen Open 2,640,168,2,$8000
- Curs Off : Palette 0,$FFF
- Screen Display 2,128,32,,
- Centre "Picture Modifier Demo!" : Print : Print
- Print " 1) Bild laden 16) H-Shear 31) H-Slime"
- Print " 2) Helligkeit 17) V-Shear 32) V-Slime"
- Print " 3) Schwarzwei�bild 18) H-Kippen O) Original zeigen"
- Print " 4) Bild umf�rben 19) V-Kippen R) Original restaurieren"
- Print " 5) Negativ 20) H-Biegen S) Produkt zeigen"
- Print " 6) Farben sortieren 21) V-Biegen C) Produkt l�schen"
- Print " 7) Quickraster 22) H-Zitrone F) Prod. Farben auf Orig."
- Print " 8) Raster 23) V-Zitrone D) Orig. Farben auf Prod."
- Print " 9) Slowraster 24) H-Rutsche A) Autoswap"
- Print "10) Verwischen 25) V-Rutsche Y) Super colorcycle!"
- Print "11) Verkleinern 26) H-Kugel"
- Print "12) Vergr��ern 27) V-Kugel"
- Print "13) Puzzle 28) H-Push"
- Print "14) H-Flip 29) V-Push"
- Print "15) V-Flip 30) Shift"
- Dim CV(63),CD(63)
- Global WX,WY,AX,AY,CO,CV(),CD()
- Degree
- F$="Renoir.iff" : Gosub LODEIFF
- Do
- Screen To Front 2 : Screen 2
- Locate 0,20 : Print "Bild: ";F$;At(20,30);"Breite:";WX;"; H�he:";WY;"; Farben:";CO;"; Helligkeit:";HEL;" ";
- Locate 0,18 : Cline : Cdown : Cline
- Locate 0,18 : Input "BEFEHL: ";I$ : I$=Upper$(I$)
- If I$="1" Then F$=Fsel$("","Renoir.iff","Load an IFF","") : Gosub LODEIFF
- If I$="2" Then Cup : Cline : Input "NEUE HELLIGKEIT(-15 bis 15): ";HEL : FARBE[HEL]
- If I$="3"
- Cup : Cline : Input "ROT (0/1),GR�N(0/1),BLAU(0,1): ";R,G,B
- BLACKWHITE[HEL,R*$100+G*$10+B]
- End If
- If I$="4"
- Cup : Cline : Input "DUNKELSTE FARBE: ";C1
- Cup : Cline : Input "HELLSTE FARBE: ";C2
- SPREADCOL[HEL,C2,C1]
- End If
- If I$="5" Then INVERS : FARBCOPY[1,0]
- If I$="6" Then Screen To Front 1 : Screen 1 : SOR[0] : FARBCOPY[1,0] : Screen Copy 1 To 0
- If I$="7" Then Cup : Cline : Input "X-ABSTAND,Y-ABSTAND: ";W,H : Screen To Front 1 : Screen 1 : QUICKRASTER[W,H]
- If I$="8" Then Cup : Cline : Input "X-ABSTAND,Y-ABSTAND: ";W,H : Screen To Front 1 : Screen 1 : RASTER[W,H]
- If I$="9" Then Cup : Cline : Input "X-ABSTAND,Y-ABSTAND: ";W,H : Screen To Front 1 : Screen 1 : SLOWRASTER[W,H]
- If I$="10"
- Cup : Cline : Input "X-ABSTAND,Y-ABSTAND,DISTANZ: ";W,H,D
- Screen To Front 1 : Screen 1 : WISCHEN[W,H,D]
- End If
- If I$="11" Then Cup : Cline : Input "NEUE BREITE,NEUE H�HE: ";W,H : SHRINK[W,H]
- If I$="12" Then Cup : Cline : Input "UM BREITE,UM H�HE: ";W,H : STRETCH[W,H]
- If I$="13"
- Cup : Cline : Input "ANZAHL,X-ABSTAND,Y-ABSTAND: ";N,W,H
- Screen To Front 1 : Screen 1 : PUZZLE[N,W,H]
- End If
- If I$="14" Then HFLIP : Screen Copy 1 To 0
- If I$="15" Then VFLIP : Screen Copy 1 To 0
- If I$="16" Then Cup : Cline : Input "X-VERSCHIEBUNG,FLAG(0/1): ";W,F : HSHEAR[W,F]
- If I$="17" Then Cup : Cline : Input "Y-VERSCHIEBUNG,FLAG(0/1): ";H,F : VSHEAR[H,F]
- If I$="18"
- Cup : Cline : Input "X-EINENGUNG,HOCH=0/RUNTER=1: ";P,F
- Screen To Front 1 : Screen 1
- If F=0 : HKIPPEN1[P] : Else HKIPPEN2[P] : End If
- End If
- If I$="19"
- Cup : Cline : Input "Y-EINENGUNG,LINKS=0/RECHTS=1: ";P,F
- Screen To Front 1 : Screen 1
- If F=0 : VKIPPEN1[P] : Else VKIPPEN2[P] : End If
- End If
- If I$="20"
- Cup : Cline : Input "X-EINENGUNG: ";P
- Screen To Front 1 : Screen 1 : HBEND[P]
- End If
- If I$="21"
- Cup : Cline : Input "Y-EINENGUNG: ";P
- Screen To Front 1 : Screen 1 : VBEND[P]
- End If
- If I$="22"
- Cup : Cline : Input "BREITE: ";P
- Screen To Front 1 : Screen 1 : HZITRONE[P]
- End If
- If I$="23"
- Cup : Cline : Input "H�HE: ";P
- Screen To Front 1 : Screen 1 : VZITRONE[P]
- End If
- If I$="24"
- Cup : Cline : Input "BREITE,HOCH=0/RUNTER=1: ";P,F
- Screen To Front 1 : Screen 1
- If F=1 : HRUTSCHE1[P] : Else HRUTSCHE2[P] : End If
- End If
- If I$="25"
- Cup : Cline : Input "H�HE,LINKS=0/RECHTS=1: ";P,F
- Screen To Front 1 : Screen 1
- If F=1 : VRUTSCHE1[P] : Else VRUTSCHE2[P] : End If
- End If
- If I$="26"
- Cup : Cline : Input "X-RADIUS,Y-RADIUS: ";W,H
- Screen To Front 1 : Screen 1 : HKUGEL[W,H]
- End If
- If I$="27"
- Cup : Cline : Input "X-RADIUS,Y-RADIUS: ";W,H
- Screen To Front 1 : Screen 1 : VKUGEL[W,H]
- End If
- If I$="28"
- Cup : Cline : Input "ANZAHL,BREITE,DISTANZ,HOCH=0/RUNTER=1: ";N,W,D,F
- Screen To Front 1 : Screen 1
- If F=1 : HPUSH1[N,W,D] : Else HPUSH2[N,W,D] : End If
- End If
- If I$="29"
- Cup : Cline : Input "ANZAHL,H�HE,DISTANZ,LINKS=0/RECHTS=1: ";N,H,D,F
- Screen To Front 1 : Screen 1
- If F=1 : VPUSH1[N,H,D] : Else VPUSH2[N,H,D] : End If
- End If
- If I$="30"
- Cup : Cline : Input "ANZAHL,BREITE,H�HE,DISTANZ: ";N,W,H,D
- Screen To Front 1 : Screen 1
- SHIFT[N,W,H,D]
- End If
- If I$="31"
- Cup : Cline : Input "ANZAHL,BREITE,DISTANZ,HOCH=0/RUNTER=1: ";N,W,D,F
- Screen To Front 1 : Screen 1
- If F=1 : HSLIME1[N,W,D] : Else HSLIME2[N,W,D] : End If
- End If
- If I$="32"
- Cup : Cline : Input "ANZAHL,H�HE,DISTANZ,LINKS=0/RECHTS=1: ";N,H,D,F
- Screen To Front 1 : Screen 1
- If F=1 : VSLIME1[N,H,D] : Else VSLIME2[N,H,D] : End If
- End If
- If I$="O" Then Screen To Front 0 : Wait Key : Screen To Front 1
- If I$="R" Then Screen Copy 0 To 1
- If I$="S" Then Screen To Front 1 : Wait Key
- If I$="C" Then Screen 1 : Cls
- If I$="F" Then FARBCOPY[1,0]
- If I$="D" Then FARBCOPY[0,1]
- If I$="A" Then Repeat : Screen To Front 0 : Wait 10 : Screen To Front 1 : Wait 10 : Until Inkey$<>""
- If I$="Y"
- Screen To Front 1 : Screen 1
- Repeat
- SPREADCOL[HEL,Rnd(4096),Rnd(4096)]
- Wait 20
- Until Inkey$<>""
- End If
- Loop
- LODEIFF:
- Load Iff F$,0
- WX=Screen Width : WY=Screen Height : CO=Screen Colour
- RES=0 : AX=1 : AY=1
- If WX>639 and CO<32 Then Add RES,$8000 : AX=2
- If WY>399 Then Add RES,4 : AY=2
- Screen Display 0,128,50+56,,
- Screen Open 1,WX,WY,CO,RES
- Curs Off : Flash Off : Paper 0 : Pen 1 : Cls
- Screen Display 1,128,50+56,,
- Screen Copy 0 To 1
- HEL=0 : FARBE[HEL]
- Return
- ERR:
- Resume Next
- End
- Procedure FARBCOPY[S,D]
- A=Screen
- Screen D : Get Palette S
- Screen A
- End Proc
- Procedure D0UBLEKILL
- For A=0 To CO-1
- CV(A)=A
- Next
- For B=0 To CO-1
- For A=0 To CO-1
- If(B<>A) and(Colour(B)=Colour(A)) and Colour(B)<>$F0F Then CV(A)=B : Colour A,$F0F
- Next
- Next
- For Y=0 To WY-1
- For X=0 To WX-1
- P=Point(X,Y) : If CV(P)<>P Then Plot X,Y,CV(P)
- Next
- Next
- End Proc
- Procedure SOR[M]
- For A=0 To CO-1
- CV(A)=A
- Next
- For B=0 To CO-1
- For A=0 To CO-1
- If M=0
- If Colour(CV(A))>Colour(CV(B)) : Swap CV(A),CV(B) : End If
- Else
- CC=Colour(CV(A))
- C1=(CC/$100)+((CC and $F0)/$10)+(CC and $F)
- CC=Colour(CV(B))
- C2=(CC/$100)+((CC and $F0)/$10)+(CC and $F)
- If C1>C2 : Swap CV(A),CV(B) : End If
- End If
- Next
- Next
- RE_MAP
- End Proc
- Procedure RE_MAP
- S=Screen
- For A=0 To CO-1
- Screen 0 : C1=Colour(CV(A))
- Screen 1 : Colour A,C1
- Next
- Screen S
- For A=0 To CO-1
- CD(CV(A))=A
- Next
- For Y=0 To WY-1
- For X=0 To WX-1
- P=Point(X,Y) : If CD(P)<>P Then Plot X,Y,CD(P)
- Next
- Next
- End Proc
- Procedure UNUSED
- For A=0 To CO-1 : CV(A)=0 : Next
- C=0
- For Y=0 To WY-1 Step 2
- For X=0 To WX-1 Step 2
- A=Point(X,Y) : If CV(A)=0 Then CV(A)=1 : Inc C : If C=CO Then Exit
- Next
- Next
- For A=0 To CO-1
- If CV(A)=0 Then Colour A,$F0F
- Next
- End Proc
- Procedure INVERS
- For A=0 To Min(CO-1,31)
- Screen 0 : C=Colour(A)
- Screen 1 : Colour A,$FFF-C
- Next
- End Proc
- Procedure SPREADCOL[H,F1,F2]
- For A=0 To Min(CO-1,31)
- Screen 0 : C=Colour(A)
- R=(C and $F00)/$100
- G=(C and $F0)/$10
- B=C and $F
- C=(R+B+G+1)/3
- C=Min(Max(C+H,0),15)
- R1=(F1 and $F00)/$100
- G1=(F1 and $F0)/$10
- B1=F1 and $F
- R2=(F2 and $F00)/$100
- G2=(F2 and $F0)/$10
- B2=F2 and $F
- D=((R1*C)/15)*$100+((G1*C)/15)*$10+(B1*C)/15
- C=15-C
- Add D,((R2*C)/15)*$100+((G2*C)/15)*$10+(B2*C)/15
- Screen 1 : Colour A,D
- Next
- End Proc
- Procedure BLACKWHITE[H,F]
- For A=0 To Min(CO-1,31)
- Screen 0 : C=Colour(A)
- R=(C and $F00)/$100
- G=(C and $F0)/$10
- B=C and $F
- C=(R+B+G+1)/3
- C=Min(Max(C+H,0),15)
- Screen 1 : Colour A,C*F
- Next
- End Proc
- Procedure FARBE[H]
- For A=0 To Min(CO-1,31)
- Screen 0 : C=Colour(A)
- R=(C and $F00)/$100
- G=(C and $F0)/$10
- B=C and $F
- R=Min(Max(R+H,0),15)
- G=Min(Max(G+H,0),15)
- B=Min(Max(B+H,0),15)
- Screen 1 : Colour A,R*$100+G*$10+B
- Next
- End Proc
- Procedure QUICKRASTER[W,H]
- For Y=0 To WY-1 Step H
- For X=0 To WX-1 Step W
- Ink Point(X,Y) : Bar X,Y To X+W-1,Y+H-1
- Next
- Next
- End Proc
- Procedure RASTER[W,H]
- For Y=0 To WY-1 Step H
- For X=0 To WX-1 Step W
- For A=0 To CO : CV(A)=0 : Next
- For YY=0 To H-1
- For XX=0 To W-1
- Inc CV(Max(Point(X+XX,Y+YY),0))
- Next
- Next
- C=0 : M=0
- For A=0 To CO
- If CV(A)>M Then C=A : M=CV(A)
- Next
- Ink C : Bar X,Y To X+W-1,Y+H-1
- Next
- Next
- End Proc
- Procedure SLOWRASTER[W,H]
- For Y=0 To WY-1 Step H
- For X=0 To WX-1 Step W
- For A=0 To CO-1 : CV(A)=0 : Next
- For YY=0 To H-1
- For XX=0 To W-1
- Inc CV(Max(Point(X+XX,Y+YY),0))
- Next
- Next
- F=0
- For A=0 To CO-1
- CC=Colour(A)
- RR=CC/$100 : GG=(CC and $F0)/$10 : BB=CC and $F
- If F=0 Then R=RR : G=GG : B=BB
- If CV(A)
- If R>50000 or G>50000 or B>50000
- R=R/(F+1) : G=G/(F+1) : B=B/(F+1) : F=0
- End If
- R=R+CV(A)*RR
- G=G+CV(A)*GG
- B=B+CV(A)*BB
- Add F,CV(A)
- End If
- Next
- R=R/(F+1) : G=G/(F+1) : B=B/(F+1)
- C=0 : M=999
- For A=0 To CO-1
- CC=Colour(A)
- RR=CC/$100 : GG=(CC and $F0)/$10 : BB=CC and $F
- MM=Abs(RR-R)+Abs(GG-G)+Abs(BB-B)
- If MM<M Then C=A : M=MM
- Next
- Ink C : Bar X,Y To X+W-1,Y+H-1
- Next
- Next
- End Proc
- Procedure WISCHEN[W,H,D]
- For Y=0 To WY-1 Step H
- For X=0 To WX-1 Step W
- C=Colour(Max(Point(X,Y),0))
- R=C/$100 : G=(C and $F0)/$10 : B=C and $F
- C=Colour(Max(Point(X+D,Y+D),0))
- R=((C/$100)+R)/2 : G=(((C and $F0)/$10)+G)/2 : B=((C and $F)+B)/2
- M=999
- For A=0 To CO-1
- CC=Colour(A)
- RR=CC/$100 : GG=(CC and $F0)/$10 : BB=CC and $F
- MM=Abs(RR-R)+Abs(GG-G)+Abs(BB-B)
- If MM<M Then C=A : M=MM
- Next
- Plot X,Y,C
- Next
- Next
- End Proc
- Procedure SHRINK[W,H]
- Zoom 0,0,0,WX,WY To 1,(WX-W)/2,(WY-H)/2,(WX+W)/2,(WY+H)/2
- End Proc
- Procedure STRETCH[W,H]
- Zoom 0,W/2,H/2,WX-W/2,WY-H/2 To 1,0,0,WX,WY
- End Proc
- Procedure PUZZLE[N,W,H]
- For A=1 To N
- X1=Rnd(WX-W)/W*W : Y1=Rnd(WY-H)/H*H
- Get Bob 1,X1,Y1 To X1+W,Y1+H
- X2=Rnd(WX-W)/W*W : Y2=Rnd(WY-H)/H*H
- Screen Copy 1,X2,Y2,X2+W,Y2+H To 1,X1,Y1
- Paste Bob X2,Y2,1
- Next
- Del Bob 1
- End Proc
- Procedure SHIFT[N,W,H,D]
- For A=1 To N
- X=Rnd(WX-W) : Y=Rnd(WY-H)
- RX=Rnd(2)-1 : RY=Rnd(2)-1
- For B=1 To D
- Screen Copy 1,X,Y,X+W,Y+H To 1,X+RX,Y+RY
- Next
- Next
- End Proc
- Procedure HSLIME1[N,W,D]
- For A=1 To N
- X=Rnd(WX-W) : Y=Rnd(WY-D)
- For B=1 To D
- Screen Copy 1,X,Y,X+W,WY To 1,X,Y+B
- Next
- Next
- End Proc
- Procedure HSLIME2[N,W,D]
- For A=1 To N
- X=Rnd(WX-W) : Y=Rnd(WY-D)
- For B=1 To D
- Screen Copy 1,X,0,X+W,Y To 1,X,-B
- Next
- Next
- End Proc
- Procedure VSLIME1[N,H,D]
- For A=1 To N
- X=Rnd(WX-D) : Y=Rnd(WY-H)
- For B=1 To D
- Screen Copy 1,X,Y,WX,Y+H To 1,X+B,Y
- Next
- Next
- End Proc
- Procedure VSLIME2[N,H,D]
- For A=1 To N
- X=Rnd(WX-D) : Y=Rnd(WY-H)
- For B=1 To D
- Screen Copy 1,0,Y,X,Y+H To 1,-B,Y
- Next
- Next
- End Proc
- Procedure HPUSH1[N,W,D]
- For A=1 To N
- X=Rnd(WX-W)
- For B=1 To D
- Screen Copy 1,X,0,X+W,WY To 1,X,B
- Next
- Next
- End Proc
- Procedure HPUSH2[N,W,D]
- For A=1 To N
- X=Rnd(WX-W)
- For B=1 To D
- Screen Copy 1,X,0,X+W,WY To 1,X,-B
- Next
- Next
- End Proc
- Procedure VPUSH1[N,H,D]
- For A=1 To N
- Y=Rnd(WY-H)
- For B=1 To D
- Screen Copy 1,0,Y,WX,Y+H To 1,B,Y
- Next
- Next
- End Proc
- Procedure VPUSH2[N,H,D]
- For A=1 To N
- X=Rnd(WX-D) : Y=Rnd(WY-H)
- For B=1 To D
- Screen Copy 1,0,Y,WX,Y+H To 1,-B,Y
- Next
- Next
- End Proc
- Procedure HKUGEL[RX,RY]
- MX=WX/2 : MY=WY/2
- For A#=0 To WY Step 0.5
- Y#=Cos((180*A#)/Min(WX,WY))*RY
- X#=Sin((180*A#)/Min(WY,WX))*RX
- If Int(Y#)<>YA and X#<>0 Then YA=Int(Y#) : Zoom 0,0,A#,WX-1,A#+1 To 1,MX-X#,MY-Y#,MX+X#,MY-Y#+1
- Next
- End Proc
- Procedure VKUGEL[RX,RY]
- MX=WX/2 : MY=WY/2
- For A#=0 To WX Step 0.5
- Y#=Sin((180*A#)/Max(WX,WY))*RY
- X#=Cos((180*A#)/Max(WY,WX))*RX
- If Int(X#)<>XA and Y#<>0 Then XA=Int(X#) : Zoom 0,A#,0,A#+1,WY-1 To 1,MX-X#,MY-Y#,MX-X#+1,MY+Y#
- Next
- End Proc
- Procedure HZITRONE[R]
- For Y=0 To WY-1
- X#=Sin((180*Y)/WY)*R
- If X#>WX/2 Then X#=WX/2
- If X#>0 Then Zoom 0,0,Y,WX-1,Y+1 To 1,WX/2-X#,Y,WX/2+X#,Y+1
- Next
- End Proc
- Procedure VZITRONE[R]
- For X=0 To WX-1
- Y#=Sin((180*X)/WX)*R
- If Y#>WY/2 Then Y#=WY/2
- If Y#>0 Then Zoom 0,X,0,X+1,WY-1 To 1,X,WY/2-Y#,X+1,WY/2+Y#
- Next
- End Proc
- Procedure HRUTSCHE1[R]
- For Y=0 To WY-1
- X#=Sin((90*Y)/WY)*R
- If X#>WX/2 Then X#=WX/2
- If X#>0 Then Zoom 0,0,Y,WX-1,Y+1 To 1,WX/2-X#,Y,WX/2+X#,Y+1
- Next
- End Proc
- Procedure HRUTSCHE2[R]
- For Y=0 To WY-1
- X#=Sin((90*Y)/WY+90)*R
- If X#>WX/2 Then X#=WX/2
- If X#>0 Then Zoom 0,0,Y,WX-1,Y+1 To 1,WX/2-X#,Y,WX/2+X#,Y+1
- Next
- End Proc
- Procedure VRUTSCHE1[R]
- For X=0 To WX-1
- Y#=Sin((90*X)/WX)*R
- If Y#>WY/2 Then Y#=WY/2
- If Y#>0 Then Zoom 0,X,0,X+1,WY-1 To 1,X,WY/2-Y#,X+1,WY/2+Y#
- Next
- End Proc
- Procedure VRUTSCHE2[R]
- For X=0 To WX-1
- Y#=Sin((90*X)/WX+90)*R
- If Y#>WY/2 Then Y#=WY/2
- If Y#>0 Then Zoom 0,X,0,X+1,WY-1 To 1,X,WY/2-Y#,X+1,WY/2+Y#
- Next
- End Proc
- Procedure HBEND[R]
- For Y=0 To WY-1
- X#=Sin((180*Y)/WY)*R
- If X#<WX/2 Then Zoom 0,0,Y,WX-1,Y+1 To 1,X#,Y,WX-X#,Y+1
- Next
- End Proc
- Procedure VBEND[R]
- For X=0 To WX-1
- Y#=Sin((180*X)/WX)*R
- If Y#<WY/2 Then Zoom 0,X,0,X+1,WY-1 To 1,X,Y#,X+1,WY-Y#
- Next
- End Proc
- Procedure HKIPPEN1[P]
- For Y=WY-1 To 0 Step -1
- X#=((WY-Y)*P)/WY
- If X#>WX/2 Then Exit
- Zoom 0,0,Y,WX-1,Y+1 To 1,X#,Y,WX-X#,Y+1
- Next
- End Proc
- Procedure HKIPPEN2[P]
- For Y=0 To WY-1
- X#=(Y*P)/WY
- If X#>WX/2 Then Exit
- Zoom 0,0,Y,WX-1,Y+1 To 1,X#,Y,WX-X#,Y+1
- Next
- End Proc
- Procedure VKIPPEN1[P]
- For X=WX-1 To 0 Step -1
- Y#=((WX-X)*P)/WX
- If Y#>WY/2 Then Exit
- Zoom 0,X,0,X+1,WY-1 To 1,X,Y#,X+1,WY-Y#
- Next
- End Proc
- Procedure VKIPPEN2[P]
- For X=0 To WX-1
- Y#=(X*P)/WX
- If Y#>WY/2 Then Exit
- Zoom 0,X,0,X+1,WY-1 To 1,X,Y#,X+1,WY-Y#
- Next
- End Proc
- Procedure HFLIP
- For X=0 To WX-1
- Screen Copy 0,WX-X,0,WX-X+1,WY To 1,X,0
- Next
- End Proc
- Procedure VFLIP
- For Y=0 To WY-1
- Screen Copy 0,0,WY-Y,WX,WY-Y+1 To 1,0,Y
- Next
- End Proc
- Procedure HSHEAR[W,UD]
- For Y=0 To WY-1
- X=(Y*W)/WY
- If UD Then X=X mod WX : Screen Copy 0,0,Y,WX,Y+1 To 1,X-WX,Y
- Screen Copy 0,0,Y,WX,Y+1 To 1,X,Y
- Next
- End Proc
- Procedure VSHEAR[H,UD]
- For X=0 To WX-1
- Y=(X*H)/WX
- If UD Then Y=Y mod WY : Screen Copy 0,X,0,X+1,WY To 1,X,Y-WY
- Screen Copy 0,X,0,X+1,WY To 1,X,Y
- Next
- End Proc
- Procedure HWAVE[R,F#,UD]
- A#=0
- For X=0 To WX-1
- Y=Sin(A#)*R
- If UD Then Screen Copy 0,X,0,X+1,WY To 1,X,Y-WY
- Screen Copy 0,X,0,X+1,WY To 1,X,Y
- If UD Then Screen Copy 0,X,0,X+1,WY To 1,X,Y+WY
- A#=A#+F#
- Next
- End Proc
- Procedure VWAVE[R,F#,UD]
- A#=0
- For Y=0 To WY-1
- X=Sin(A#)*R
- If UD Then Screen Copy 0,0,Y,WX,Y+1 To 1,X-WX,Y
- Screen Copy 0,0,Y,WX,Y+1 To 1,X,Y
- If UD Then Screen Copy 0,0,Y,WX,Y+1 To 1,X+WX,Y
- A#=A#+F#
- Next
- End Proc